Adwaita: flat button :hover and :active
authorJakub Steiner <jimmac@gmail.com>
Thu, 10 Dec 2020 13:16:25 +0000 (14:16 +0100)
committerJakub Steiner <jimmac@gmail.com>
Thu, 10 Dec 2020 13:16:25 +0000 (14:16 +0100)
- special case undecorated button hovers

gtk/theme/Adwaita/_common.scss
gtk/theme/Adwaita/_drawing.scss

index 7694920d83c5fc5a8de6cb1304c3ffcd604e939e..1d2f8b6396f06a220bb5db143d6e5eb06d90d091 100644 (file)
@@ -484,23 +484,6 @@ button {
 
     @include focus-ring();
 
-    @at-root %button_basic_flat,
-    &.flat {
-      @include button(undecorated);
-      // to avoid adjacent buttons borders clashing when transitioning, the transition on the normal state is set
-      // to none, while it's added back in the hover state, so the button decoration will fade in on hover, but
-      // it won't fade out when the pointer leave the button allocation area. To make the transition more evident
-      // in this case the duration is increased.
-      transition: none;
-
-      &:hover {
-        transition: $button_transition;
-        transition-duration: 500ms;
-      }
-      &:active { transition: $button_transition; }
-      &:backdrop, &:disabled, &:backdrop:disabled { @include button(undecorated); }
-    }
-
     &:hover {
       @include button(hover);
       -gtk-icon-filter: brightness(1.2);
@@ -539,6 +522,27 @@ button {
       &:checked { @include button(insensitive-active); }
     }
 
+    @at-root %button_basic_flat,
+    &.flat {
+      @include button(undecorated);
+      // to avoid adjacent buttons borders clashing when transitioning, the transition on the normal state is set
+      // to none, while it's added back in the hover state, so the button decoration will fade in on hover, but
+      // it won't fade out when the pointer leave the button allocation area. To make the transition more evident
+      // in this case the duration is increased.
+      transition: none;
+
+      &:hover {
+        @include button(undecorated-hover);
+        transition: $button_transition;
+        transition-duration: 500ms;
+      }
+      &:active {
+        @include button(undecorated-active);
+        transition: $button_transition;
+      }
+      &:backdrop, &:disabled, &:backdrop:disabled { @include button(undecorated); }
+    }
+
     &.image-button {
       min-width: 24px;
       padding-left: 5px;
index c80fcb5ec093e1f19f77d8ad6f36917cbb09c6df..dd45692767b0d9e37257bc65e28ba2a321669b40 100644 (file)
     text-shadow: none;
     -gtk-icon-shadow: none;
   }
+  @else if $t==undecorated-hover {
+    border-color: transparent;
+    background-image: none;
+    box-shadow: none;
+    text-shadow: none;
+    @if $variant == 'light' {
+      background-color: darken($c,26%);
+    }
+    @else {
+      background-color: darken($c,10%);
+    }
+  }
+  @else if $t==undecorated-active {
+    border-color: transparent;
+    background-image: none;
+    box-shadow: none;
+    text-shadow: none;
+    @if $variant == 'light' {
+      background-color: darken($c,40%);
+    }
+    @else {
+      background-color: darken($c,14%);
+    }
+  }
 }
 
 @mixin headerbar_fill($c:$headerbar_bg_color, $hc:$top_hilight, $ov: none) {